
/**
 * Project Name:cats-core
 * File Name:RoleService.java
 * Package Name:com.catsic.core.role.service
 * Date:2014年2月27日上午11:20:58
 * Copyright (c) 2014, oa.catsic.com All Rights Reserved.
 */
 
package com.catsic.core.role.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.catsic.base.BaseService;
import com.catsic.core.conditon.RoleCondition;
import com.catsic.core.entity.Role;
import com.catsic.core.form.MenuForm;
import com.catsic.core.form.OrganForm;
import com.catsic.core.form.ResourceForm;
import com.catsic.core.form.RoleForm;

/**
 * ClassName: RoleService
 * Description: 角色Service接口类
 * date: 2014年2月27日 上午11:20:58
 * author: yangyd
 */
public interface RoleService extends BaseService<Role, String>{
	
	/**
	 * add:添加
	 * @author yangyd
	 * @param  form
	 * @return RoleForm
	 */
	public RoleForm add(RoleForm form);

	/**
	 * update:更新
	 * @author yangyd
	 * @param form
	 * @return
	 */
	public RoleForm update(RoleForm form);
	
	/**
	 * delete:删除角色
	 * @author yangyd
	 * @param id
	 * @return
	 */
	public void delete(String id);
	
	/**
	 * findById:通过Id查询
	 * @author yangyd
	 * @param id
	 * @return Role
	 */
	public Role findById(String id);
	
	/**
	 * 通过Id取得查询
	 * @param 
	 */
	public RoleForm findRoleById(String id);
	
	/**
	 * findAll:查询
	 * @author yangyd
	 * @param condition
	 * @param pageable
	 * @return
	 */
	public Page<RoleForm> findAll(RoleCondition condition, Pageable pageable);
	
	/**
	 * findMenusById:通过角色ID获取对应的菜单
	 * @author yangyudi
	 * @param id
	 * @return
	 */
	public List<MenuForm> findMenusById(String id);
	
	/**
	 * findResourcesById:通过角色ID获取对应的资源
	 * @author yangyudi
	 * @param id
	 * @return
	 */
	public List<ResourceForm> findResourcesById(String id);
	
	/**
	 * bind:角色绑定
	 * @author yangyd
	 * @param info
	 * @return
	 */
	public Role bind(Role info);
	
	/**
	 * bindOrgan:绑定机构
	 * @author yangyd
	 * @param info
	 * @return
	 */
	public Role bindOrgan(Role info);
	
	/**
	 * findRoleByOrganId:获取机构绑定的角色
	 * @author yangyd
	 * @param info
	 * @return
	 */
	public List<RoleForm> findByOrganId(String organId);
	
	/**
	 * findByUserId:获取用户绑定的角色
	 * @author yangyd
	 * @param userId
	 * @return
	 */
	public List<RoleForm> findByUserId(String userId);
	
	/**
	 * getBindRole:获取绑定的角色
	 * @author yangyd
	 * @param userId
	 * @return
	 */
	public List<RoleForm> getBindRole(String userId);
	
	/**
	 * findOrganById:获取角色绑定的机构
	 * @author yangyd
	 * @param info
	 * @return
	 */
	public List<OrganForm> findOrganById(String id);
	
	/**
	 * @see com.catsic.base.BaseService#findAll()
	 */
	public List<Role> findAll();
	
	/**
	 * 通过资源ID获取资源绑定的角色
	 * @param resourceId
	 * @return
	 */
	List<Role> findRoleByResourceId(String resourceId);
	
	/**
	 * 通过menuId找到菜单绑定的角色
	 * @param menuId
	 * @return
	 */
	public List<Role> findRoleByMenuId(String menuId);
}
